import UIKit

@available(iOS 2.0, *)
extension QKC where AA :UIScrollView {
		// default CGPointZero
    open func contentOffset_qk_s(_ contentOffset:  CGPoint ) -> QKC<AA,YY,ZZ, CGPoint >{
		return link(next: contentOffset).then_QK { $0.value.contentOffset = contentOffset }
	}
    open func contentOffset_qk_g() -> QKC<AA,YY,ZZ, CGPoint >{
		 self +^ self.value.contentOffset
	}

		// default CGSizeZero
    open func contentSize_qk_s(_ contentSize:  CGSize ) -> QKC<AA,YY,ZZ, CGSize >{
		return link(next: contentSize).then_QK { $0.value.contentSize = contentSize }
	}
    open func contentSize_qk_g() -> QKC<AA,YY,ZZ, CGSize >{
		 self +^ self.value.contentSize
	}

		// default UIEdgeInsetsZero. add additional scroll area around content
    open func contentInset_qk_s(_ contentInset:  UIEdgeInsets ) -> QKC<AA,YY,ZZ, UIEdgeInsets >{
		return link(next: contentInset).then_QK { $0.value.contentInset = contentInset }
	}
    open func contentInset_qk_g() -> QKC<AA,YY,ZZ, UIEdgeInsets >{
		 self +^ self.value.contentInset
	}

    @available(iOS 11.0, *)
    open func adjustedContentInset_qk_g() -> QKC<AA,YY,ZZ, UIEdgeInsets >{
		 self +^ self.value.adjustedContentInset
	}

    @available(iOS 11.0, *)
    open func contentInsetAdjustmentBehavior_qk_s(_ contentInsetAdjustmentBehavior:  UIScrollView.ContentInsetAdjustmentBehavior) -> QKC<AA,YY,ZZ, UIScrollView.ContentInsetAdjustmentBehavior>{
		return link(next: contentInsetAdjustmentBehavior).then_QK { $0.value.contentInsetAdjustmentBehavior = contentInsetAdjustmentBehavior }
	}
    @available(iOS 11.0, *)
    open func contentInsetAdjustmentBehavior_qk_g() -> QKC<AA,YY,ZZ, UIScrollView.ContentInsetAdjustmentBehavior>{
		 self +^ self.value.contentInsetAdjustmentBehavior
	}

    @available(iOS 13.0, *)
    open func automaticallyAdjustsScrollIndicatorInsets_qk_s(_ automaticallyAdjustsScrollIndicatorInsets:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: automaticallyAdjustsScrollIndicatorInsets).then_QK { $0.value.automaticallyAdjustsScrollIndicatorInsets = automaticallyAdjustsScrollIndicatorInsets }
	}
    @available(iOS 13.0, *)
    open func automaticallyAdjustsScrollIndicatorInsets_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.automaticallyAdjustsScrollIndicatorInsets
	}

    @available(iOS 11.0, *)
    open func contentLayoutGuide_qk_g() -> QKC<AA,YY,ZZ, UILayoutGuide >{
		 self +^ self.value.contentLayoutGuide
	}

    @available(iOS 11.0, *)
    open func frameLayoutGuide_qk_g() -> QKC<AA,YY,ZZ, UILayoutGuide >{
		 self +^ self.value.frameLayoutGuide
	}

		// default nil. weak reference
     open func delegate_qk_s(_ delegate:  UIScrollViewDelegate? ) -> QKC<AA,YY,ZZ, UIScrollViewDelegate? >{
		return link(next: delegate).then_QK { $0.value.delegate = delegate }
	}
     open func delegate_qk_g() -> QKC<AA,YY,ZZ, UIScrollViewDelegate? >{
		 self +^ self.value.delegate
	}

		// default NO. if YES, try to lock vertical or horizontal scrolling while dragging
    open func isDirectionalLockEnabled_qk_s(_ isDirectionalLockEnabled:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: isDirectionalLockEnabled).then_QK { $0.value.isDirectionalLockEnabled = isDirectionalLockEnabled }
	}
    open func isDirectionalLockEnabled_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isDirectionalLockEnabled
	}

		// default YES. if YES, bounces past edge of content and back again
    open func bounces_qk_s(_ bounces:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: bounces).then_QK { $0.value.bounces = bounces }
	}
    open func bounces_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.bounces
	}

		// default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag vertically
    open func alwaysBounceVertical_qk_s(_ alwaysBounceVertical:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: alwaysBounceVertical).then_QK { $0.value.alwaysBounceVertical = alwaysBounceVertical }
	}
    open func alwaysBounceVertical_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.alwaysBounceVertical
	}

		// default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag horizontally
    open func alwaysBounceHorizontal_qk_s(_ alwaysBounceHorizontal:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: alwaysBounceHorizontal).then_QK { $0.value.alwaysBounceHorizontal = alwaysBounceHorizontal }
	}
    open func alwaysBounceHorizontal_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.alwaysBounceHorizontal
	}

		// default NO. if YES, stop on multiples of view bounds
    open func isPagingEnabled_qk_s(_ isPagingEnabled:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: isPagingEnabled).then_QK { $0.value.isPagingEnabled = isPagingEnabled }
	}
    open func isPagingEnabled_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isPagingEnabled
	}

		// default YES. turn off any dragging temporarily
    open func isScrollEnabled_qk_s(_ isScrollEnabled:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: isScrollEnabled).then_QK { $0.value.isScrollEnabled = isScrollEnabled }
	}
    open func isScrollEnabled_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isScrollEnabled
	}

		// default YES. show indicator while we are tracking. fades out after tracking
    open func showsVerticalScrollIndicator_qk_s(_ showsVerticalScrollIndicator:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: showsVerticalScrollIndicator).then_QK { $0.value.showsVerticalScrollIndicator = showsVerticalScrollIndicator }
	}
    open func showsVerticalScrollIndicator_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.showsVerticalScrollIndicator
	}

		// default YES. show indicator while we are tracking. fades out after tracking
    open func showsHorizontalScrollIndicator_qk_s(_ showsHorizontalScrollIndicator:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: showsHorizontalScrollIndicator).then_QK { $0.value.showsHorizontalScrollIndicator = showsHorizontalScrollIndicator }
	}
    open func showsHorizontalScrollIndicator_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.showsHorizontalScrollIndicator
	}

		// default is UIScrollViewIndicatorStyleDefault
    open func indicatorStyle_qk_s(_ indicatorStyle:  UIScrollView.IndicatorStyle ) -> QKC<AA,YY,ZZ, UIScrollView.IndicatorStyle >{
		return link(next: indicatorStyle).then_QK { $0.value.indicatorStyle = indicatorStyle }
	}
    open func indicatorStyle_qk_g() -> QKC<AA,YY,ZZ, UIScrollView.IndicatorStyle >{
		 self +^ self.value.indicatorStyle
	}

		// default is UIEdgeInsetsZero.
    @available(iOS 11.1, *)
    open func verticalScrollIndicatorInsets_qk_s(_ verticalScrollIndicatorInsets:  UIEdgeInsets ) -> QKC<AA,YY,ZZ, UIEdgeInsets >{
		return link(next: verticalScrollIndicatorInsets).then_QK { $0.value.verticalScrollIndicatorInsets = verticalScrollIndicatorInsets }
	}
    @available(iOS 11.1, *)
    open func verticalScrollIndicatorInsets_qk_g() -> QKC<AA,YY,ZZ, UIEdgeInsets >{
		 self +^ self.value.verticalScrollIndicatorInsets
	}

		// default is UIEdgeInsetsZero.
    @available(iOS 11.1, *)
    open func horizontalScrollIndicatorInsets_qk_s(_ horizontalScrollIndicatorInsets:  UIEdgeInsets ) -> QKC<AA,YY,ZZ, UIEdgeInsets >{
		return link(next: horizontalScrollIndicatorInsets).then_QK { $0.value.horizontalScrollIndicatorInsets = horizontalScrollIndicatorInsets }
	}
    @available(iOS 11.1, *)
    open func horizontalScrollIndicatorInsets_qk_g() -> QKC<AA,YY,ZZ, UIEdgeInsets >{
		 self +^ self.value.horizontalScrollIndicatorInsets
	}

		// use the setter only, as a convenience for setting both verticalScrollIndicatorInsets and horizontalScrollIndicatorInsets to the same value. if those properties have been set to different values, the return value of this getter (deprecated) is undefined.
    open func scrollIndicatorInsets_qk_s(_ scrollIndicatorInsets:  UIEdgeInsets ) -> QKC<AA,YY,ZZ, UIEdgeInsets >{
		return link(next: scrollIndicatorInsets).then_QK { $0.value.scrollIndicatorInsets = scrollIndicatorInsets }
	}
    open func scrollIndicatorInsets_qk_g() -> QKC<AA,YY,ZZ, UIEdgeInsets >{
		 self +^ self.value.scrollIndicatorInsets
	}

    @available(iOS 3.0, *)
    open func decelerationRate_qk_s(_ decelerationRate:  UIScrollView.DecelerationRate) -> QKC<AA,YY,ZZ, UIScrollView.DecelerationRate>{
		return link(next: decelerationRate).then_QK { $0.value.decelerationRate = decelerationRate }
	}
    @available(iOS 3.0, *)
    open func decelerationRate_qk_g() -> QKC<AA,YY,ZZ, UIScrollView.DecelerationRate>{
		 self +^ self.value.decelerationRate
	}

    open func indexDisplayMode_qk_s(_ indexDisplayMode:  UIScrollView.IndexDisplayMode) -> QKC<AA,YY,ZZ, UIScrollView.IndexDisplayMode>{
		return link(next: indexDisplayMode).then_QK { $0.value.indexDisplayMode = indexDisplayMode }
	}
    open func indexDisplayMode_qk_g() -> QKC<AA,YY,ZZ, UIScrollView.IndexDisplayMode>{
		 self +^ self.value.indexDisplayMode
	}

		// returns YES if user has touched. may not yet have started dragging
    open func isTracking_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isTracking
	}

		// returns YES if user has started scrolling. this may require some time and or distance to move to initiate dragging
    open func isDragging_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isDragging
	}

		// returns YES if user isn't dragging (touch up) but scroll view is still moving
    open func isDecelerating_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isDecelerating
	}

		// default is YES. if NO, we immediately call -touchesShouldBegin:withEvent:inContentView:. this has no effect on presses
    open func delaysContentTouches_qk_s(_ delaysContentTouches:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: delaysContentTouches).then_QK { $0.value.delaysContentTouches = delaysContentTouches }
	}
    open func delaysContentTouches_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.delaysContentTouches
	}

		// default is YES. if NO, then once we start tracking, we don't try to drag if the touch moves. this has no effect on presses
    open func canCancelContentTouches_qk_s(_ canCancelContentTouches:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: canCancelContentTouches).then_QK { $0.value.canCancelContentTouches = canCancelContentTouches }
	}
    open func canCancelContentTouches_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.canCancelContentTouches
	}

		// default is 1.0
    open func minimumZoomScale_qk_s(_ minimumZoomScale:  CGFloat ) -> QKC<AA,YY,ZZ, CGFloat >{
		return link(next: minimumZoomScale).then_QK { $0.value.minimumZoomScale = minimumZoomScale }
	}
    open func minimumZoomScale_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.minimumZoomScale
	}

		// default is 1.0. must be > minimum zoom scale to enable zooming
    open func maximumZoomScale_qk_s(_ maximumZoomScale:  CGFloat ) -> QKC<AA,YY,ZZ, CGFloat >{
		return link(next: maximumZoomScale).then_QK { $0.value.maximumZoomScale = maximumZoomScale }
	}
    open func maximumZoomScale_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.maximumZoomScale
	}

		// default is 1.0
    @available(iOS 3.0, *)
    open func zoomScale_qk_s(_ zoomScale:  CGFloat ) -> QKC<AA,YY,ZZ, CGFloat >{
		return link(next: zoomScale).then_QK { $0.value.zoomScale = zoomScale }
	}
    @available(iOS 3.0, *)
    open func zoomScale_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.zoomScale
	}

		// default is YES. if set, user can go past min/max zoom while gesturing and the zoom will animate to the min/max value at gesture end
    open func bouncesZoom_qk_s(_ bouncesZoom:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: bouncesZoom).then_QK { $0.value.bouncesZoom = bouncesZoom }
	}
    open func bouncesZoom_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.bouncesZoom
	}

		// returns YES if user in zoom gesture
    open func isZooming_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isZooming
	}

		// returns YES if we are in the middle of zooming back to the min/max value
    open func isZoomBouncing_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isZoomBouncing
	}

	// On iPhone, we execute this gesture only if there's one on-screen scroll view with `scrollsToTop` == YES. If more than one is found, none will be scrolled.
		// default is YES.
    open func scrollsToTop_qk_s(_ scrollsToTop:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: scrollsToTop).then_QK { $0.value.scrollsToTop = scrollsToTop }
	}
    open func scrollsToTop_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.scrollsToTop
	}

	// Change `panGestureRecognizer.allowedTouchTypes` to limit scrolling to a particular set of touch types.
    @available(iOS 5.0, *)
    open func panGestureRecognizer_qk_g() -> QKC<AA,YY,ZZ, UIPanGestureRecognizer >{
		 self +^ self.value.panGestureRecognizer
	}

	// `pinchGestureRecognizer` will return nil when zooming is disabled.
    @available(iOS 5.0, *)
    open func pinchGestureRecognizer_qk_g() -> QKC<AA,YY,ZZ, UIPinchGestureRecognizer? >{
		 self +^ self.value.pinchGestureRecognizer
	}

	// `directionalPressGestureRecognizer` is disabled by default, but can be enabled to perform scrolling in response to up / down / left / right arrow button presses directly, instead of scrolling indirectly in response to focus updates.
    open func directionalPressGestureRecognizer_qk_g() -> QKC<AA,YY,ZZ, UIGestureRecognizer >{
		 self +^ self.value.directionalPressGestureRecognizer
	}

		// default is UIScrollViewKeyboardDismissModeNone
    @available(iOS 7.0, *)
    open func keyboardDismissMode_qk_s(_ keyboardDismissMode:  UIScrollView.KeyboardDismissMode ) -> QKC<AA,YY,ZZ, UIScrollView.KeyboardDismissMode >{
		return link(next: keyboardDismissMode).then_QK { $0.value.keyboardDismissMode = keyboardDismissMode }
	}
    @available(iOS 7.0, *)
    open func keyboardDismissMode_qk_g() -> QKC<AA,YY,ZZ, UIScrollView.KeyboardDismissMode >{
		 self +^ self.value.keyboardDismissMode
	}

    @available(iOS 10.0, *)
    open func refreshControl_qk_s(_ refreshControl:  UIRefreshControl?) -> QKC<AA,YY,ZZ, UIRefreshControl?>{
		return link(next: refreshControl).then_QK { $0.value.refreshControl = refreshControl }
	}
    @available(iOS 10.0, *)
    open func refreshControl_qk_g() -> QKC<AA,YY,ZZ, UIRefreshControl?>{
		 self +^ self.value.refreshControl
	}

    @available(iOS 11.0, *)
    open func adjustedContentInsetDidChange_qk_f() -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.adjustedContentInsetDidChange()
	}

		// animate at constant velocity to new offset
    open func setContentOffset_qk_f(_ contentOffset: CGPoint, animated: Bool) -> QKC<AA,YY,ZZ, CGPoint>{
		 self +^ self.value.setContentOffset(contentOffset, animated:animated) +^ contentOffset
	}

		// scroll so rect is just visible (nearest edges). nothing if rect completely visible
    open func scrollRectToVisible_qk_f(_ rect: CGRect, animated: Bool) -> QKC<AA,YY,ZZ, CGRect>{
		 self +^ self.value.scrollRectToVisible(rect, animated:animated) +^ rect
	}

		// displays the scroll indicators for a short time. This should be done whenever you bring the scroll view to front.
    open func flashScrollIndicators_qk_f() -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.flashScrollIndicators()
	}

	// default returns YES
    open func touchesShouldBegin_qk_f(_ touches: Set<UITouch>, with event: UIEvent?, in view: UIView) -> QKC<AA,YY,ZZ,Bool>{
		 self +^ self.value.touchesShouldBegin(touches, with:event, in:view)
	}

	// this has no effect on presses
    open func touchesShouldCancel_qk_f(in view: UIView) -> QKC<AA,YY,ZZ,Bool>{
		 self +^ self.value.touchesShouldCancel(in:view)
	}

    @available(iOS 3.0, *)
    open func setZoomScale_qk_f(_ scale: CGFloat, animated: Bool) -> QKC<AA,YY,ZZ, CGFloat>{
		 self +^ self.value.setZoomScale(scale, animated:animated) +^ scale
	}

    @available(iOS 3.0, *)
    open func zoom_qk_f(to rect: CGRect, animated: Bool) -> QKC<AA,YY,ZZ, CGRect>{
		 self +^ self.value.zoom(to:rect, animated:animated) +^ rect
	}

}

